﻿/**********************************************************************
 * @file   GUITranslateDialog.h
 * @brief  可见性窗口管理
 * @author guqingtao (15598887859@163.com)
 * @date   2025-2-27
 *********************************************************************/
#ifndef _GUITranslateDialog_H
#define _GUITranslateDialog_H

#include "GUIToolDialogAPI.h"
#include "GUIWidget/GUIDialogBase.h"
#include "FITK_Interface/FITKInterfaceGeometry/FITKAbsGeoCommand.h"
#include <QList>

namespace Ui {
    class GUITranslateDialog;
}

namespace Interface {
    class FITKNodeList;
}

namespace Core
{
    class FITKActionOperator;
}
namespace GUI
{
    /**
     * @brief  可见性窗口管理
     * @author guqingtao (15598887859@163.com)
     * @date   2025-2-27
     */
    class GUIToolDialogAPI GUITranslateDialog :public GUIDialogBase
    {
        Q_OBJECT;
    public:
        /**
         * @brief    构造函数
         * @author guqingtao (15598887859@163.com)
         * @date   2025-2-27
         */
        GUITranslateDialog(Core::FITKActionOperator* oper, QWidget* parent = nullptr);
        /**
         * @brief    析构函数
         * @author guqingtao (15598887859@163.com)
         * @date   2025-2-27
         */
        virtual ~GUITranslateDialog();
        /**
         * @brief    初始化
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void init();

    private slots:
        /**
         * @brief    拾取类型下拉框
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void on_comboBox_Pick_currentIndexChanged(int index);
        /**
         * @brief    数据类型下拉框
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void on_comboBox_Object_currentIndexChanged(int index);
        /**
         * @brief    拾取节点按钮1
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void on_pushButtonPoint1_Pick_clicked();
        /**
         * @brief    拾取节点按钮2
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void on_pushButtonPoint2_Pick_clicked();
        /**
         * @brief    拾取梁按钮
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void on_pushButtonLine_Pick_clicked();
        /**
         * @brief    拾取模型按钮
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void on_pushButtonModel_Pick_clicked();
        /**
         * @brief    Cancel按钮
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void on_pushButton_Cancel_clicked();
        /**
         * @brief    OK按钮
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void on_pushButton_OK_clicked();
    private:
        /**
         * @brief    拾取操作器
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void enablePickSig(int pickObjType, int pickMethodType);
        /**
         * @brief    拾取完成操作器,点击后，触发
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void pickFinishedOper() ;
        /**
         * @brief    平移SEA模型
         * @return   void
         * @author   guqingtao (15598887859@163.com)
         * @date     2025-2-27
         */
        void transSEAObj();
        
    private:
        /**
         * @brief  ui
         * @author guqingtao (15598887859@163.com)
         * @date   2025-2-27
         */
        Ui::GUITranslateDialog* _ui = nullptr;
        /**
         * @brief  oper
         * @author guqingtao (15598887859@163.com)
         * @date   2025-2-27
         */
        Core::FITKActionOperator* _oper = nullptr;
        /**
         * @brief  模型数据ID
         * @author guqingtao (15598887859@163.com)
         * @date   2025-2-27
         */
        int _modelObjID = -1;
        /**
         * @brief  梁数据ID
         * @author guqingtao (15598887859@163.com)
         * @date   2025-2-27
         */
        int _wireID = -1;
        /**
         * @brief  两节点数据ID
         * @author guqingtao (15598887859@163.com)
         * @date   2025-2-27
         */
        int _twoPointID[2] = {-1,-1};
        /**
         * @brief  拾取数据标志位
         * @author guqingtao (15598887859@163.com)
         * @date   2025-2-27
         */
        int _flag = 0;
    };
}

#endif
